#include<bits/stdc++.h>
using namespace std;

struct Block
{
	int  _arrive;
	int _wait;
	int _usage;
	
}p[10];

int vis[10]={0};

bool dfs(int f,int end,int n)//f当前层次，end上架飞机最快结束时间
{
	if(f==n)
	{
		return true;
	}
	for(int i=0;i<n;i++)
	{
		if(p[i]._arrive+p[i]._wait<end || vis[i])//如果该架最长坚持时间小于上一架的最快结束时间那就不行
		{
			continue;
		}
		else
		{
			vis[i]=1;
			if(dfs(f+1,max(end,p[i]._arrive)+p[i]._usage,n))//如果到达时间大于结束时间那就到达再说，如果结束时间大于到达时间，那就等结束
			{
				return true;
			}
			else
			{
				vis[i]=0;
			}

		}
	}
	return false;
	
}
int main()
{
	int t;
	cin>>t;
	while(t--)
	{
		int n;
		cin>>n;
        memset(vis,0,sizeof(vis));
		for(int i=0;i<n;i++)
		{
			cin>>p[i]._arrive>>p[i]._wait>>p[i]._usage;
		}
		if(dfs(0,0,n))
		{
			cout<<"YES"<<endl;
		}
		else
		{
			cout<<"NO"<<endl;
		}
		
	}

	
	return 0;
}